package facade;

/**
 * 门面模式（外观模式）
 *  提供了一个接口，用以访问相同子系统或不同子系统中的一群接口，统一接口的功能
 * 1. 外观角色Facade：系统对外的统一接口
 * 2. 子系统角色Subsystem：可以有一个或多个。Subsystem不知道Facade的存在
 *
 * =>
 *  Slf4j日志框架统一了log4j,log4j2,commomLog
 *
 *  引入Facade后，客户端只需要维护Facade的版本，不需要维护各个子系统的版本，降低耦合性
 *  Facade对客户端提供的，只是客户端需要的，而非子系统的全部功能
 *  复合迪米特法则，客户端对子系统尽量少的了解
 */
public class FacadeTest {
    public static void main(String[] args) {
        SimpleFacade facade = new SimpleFacade();
        facade.doAB();
    }
}
